技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
4
0
Mobile Development
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
系列 第
4
篇
Day4-Android APP 佈局
kotlin
android app
linrear layout
relative layout
constraintlayout
Deron
團隊
甘阿餒
2020-09-17 13:27:19
2296 瀏覽
分享至
佈局是什麼?
佈局有哪些?
Q:佈局是什麼?
A:佈局就是一個容器,可以裝一堆元件,也可以裝佈局
Q:佈局有哪些?
A:LinearLayout、RelativeLayout、ConstraintLayout等等 (今天先介紹這三種)
Q:既然佈局都是裝元件的,那我要這麼多種佈局幹嘛?
A:每一種佈局內部擁有的元件,
排列
、
對齊
方式都不一樣
下面我們用圖來看,會比較清楚
LinearLayout (線性佈局) ------ 第一種佈局
上圖這個APP畫面最外面 LinearLayout 包著 TextView,也包著另一個 LinearLayout。
從上圖可以知道 LinearLayout 這個佈局 ( 容器 )裡面的元件,有兩種對齊方式
垂直
-> 像是上圖最外層的 LinearLayout
水平
-> 像是內層下面那個 LinearLayout
我們以
蝦皮APP
為例子來分析一下
由於我們認識的元件還不多,這邊先大概理解就可以了!
上半部
最外層 ScrollView 這個元件可以讓內部的畫面滑動顯示
中間層 LinearLayout 當作畫面的佈局,意思是接下來內部的東西要垂直對齊
最內層 由前面解說發現,佈局其實也可以包住佈局,所以這裡四個不同區塊,可以是元件、也可以是佈局
下半部
水平的 LinearLayout 包進五個元件
這裡有一點要提醒大家:上面所說的都只是對這個畫面的
分析
,意味著這個畫面不一定是 100% 像我說的這樣製作出來,每位工程師的設計方式都會有些許差異,懂的工具多寡也會影響。
RelativeLayout (相對佈局) ------ 第二種佈局
假設我們最外層是 RelativeLayout 佈局,裡面有 A、B、C 三個元件
從左到右五張圖
第一張 -> 元件隨意擺放,尚未對齊
第二張
將 A 元件對齊 RelativeLayout 的左邊
將 A 元件對齊 RelativeLayout 的上面
第三張
將 B 元件對齊 A 元件的底下
將 B 元件對齊 RelativeLayout 的左邊
第四張
將 C 元件的 Top 對齊 B 元件的 Top
第五章
將 C 元件對齊 B 元件的右邊
結論:RelativeLayout 就是看你的元件想要在誰的附近,利用這種彼此相對的位子來對齊。當然也可以對齊外層包住自己的佈局
一樣讓我們找個畫面來分析看看
ConstraintLayout ------ 第三種佈局
ConstraintLayout 其實可以當作是
RelativeLayout 的升級版
除了相對關係的對齊方式以外,可以自己在畫面上加上一條
隱形的線
用以對齊
Q:這條線有什麼用處呢?
A:可以依照手機尺寸的比例,去設置你線的位置,再利用這條線的相對位置去對齊
優點1:你的 APP 在不同手機上,顯示不會差異太大
不管手機的螢幕尺寸、密度、解析度
優點2:不用像 RelativeLayout 一樣,一定得對著某個東西對齊
這條線是隱形的,意味著只有開發的你看的到,使用者不會看到他顯示在你的APP上。
優點3:也是最重要的一點,當畫面複雜時,ConstraintLayout 的效能會比 LinearLayout 和 RelativeLayout 好很多。
這點我們後面再解釋,先知道這個東西很讚就對了!
ConstraintLayout 的範例我就不放了,基本上,上面的範例都可以藉由這種
隱形線+相對位置
去對齊達到效果。
今天我們認識了三個重要的
佈局
,明天我們要認識一些基本的
元件
,熟悉之後,我們會再舉一些有名的 APP,去分析一下上面的效果分別是對應到哪個元件。
留言
追蹤
檢舉
上一篇
Day3-Android APP 設計畫面的地方
下一篇
Day5 - Android LinearLayout 佈局使用
系列文
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
共
30
篇
目錄
RSS系列文
訂閱系列文
19
人訂閱
26
Day26 - 設定路由器防火牆開通HTTP、80與HTTPS 443 Port
27
Day27 - Google Play Console
28
Day28 - Build APK & 發佈審核
29
Day29 - 回顧這個月做的事情
30
Day30 - Android APP 最後一天
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22170
篇
完賽人數
597
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
請問各位大神,有辦法更改家中的網路對外IP嗎 Orz
MSSQL 滿3個月的算法
請教舊電腦架網站的防護措施
網路查詢指令應用
qr code生成多功能系統
如何用指令自動偵測有插網線的網卡IP
JS 是否可以匯入「.xls」
電子書閱讀器購買和實體書的優缺勢分析
我只是要解新手任務 不用理這篇
administrators群組成員的管理員權限不見
熱門回答
請教舊電腦架網站的防護措施
請問各位大神,有辦法更改家中的網路對外IP嗎 Orz
JS 是否可以匯入「.xls」
如何自製搜尋引擎
請問win11如何調整excel工作表索引標籤字型大小?
熱門文章
觀察 TCP UDP port 目的埠和應用程式的關係,CurrPorts 和 Microsoft Network Monitor
Python 模組: math & statistics
Python 中的控制流:讓程式更靈活
Win11 24H2 終於對 NTLM 動手了(感動
Microservice Pattern 犧牲了什麼?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}